| Kaynak | LeetCode |
|---|---|
| Kategori | Linked List |
| Zorluk Seviyesi | |
| Eklenme Tarihi | 1 Aralık 2024 |
| Anahtar Kelime |
İki bağlı listenin (linked-list) başlarını (headA ve headB) verilen bir fonksiyonda,
bu iki listenin kesiştiği düğümü döndürün. Eğer iki bağlı listenin kesişimi yoksa null döndürün.
Örneğin: Aşağıdaki bağlı iki liste c1 düğümünde kesişmeye başlıyor.
Test senaryoları, bağlı yapıların içinde herhangi bir döngü olmadığı garanti edilerek üretilir.
Not: Bağlı listeler, fonksiyon döndükten sonra özgün yapılarını korumalıdır.
Özel Hakem (Custom Judge)
Hakeme verilen girdiler şunlardır (programınıza bu girdiler doğrudan verilmez):
intersectVal: Kesişimin olduğu düğümün değeri. Eğer bir kesişim yoksa bu değer0olur.listA: İlk bağlı listenin başı.listB: İkinci bağlı listenin başı.skipA:listAiçinde kesişim düğümüne ulaşmak için baştan itibaren atlanacak düğüm sayısı.skipB:listBiçinde kesişim düğümüne ulaşmak için baştan itibaren atlanacak düğüm sayısı.
Hakem, bu girdilere dayanarak bağlı yapıların tamamını oluşturacak ve programınıza yalnızca headA ve headB
başlarını verecek. Eğer doğru şekilde kesişim düğümünü döndürürseniz çözümünüz kabul edilecektir.
-
Girdi:
intersectVal = 8listA = [4, 1, 8, 4, 5]listB = [5, 6, 1, 8, 4, 5]skipA = 2skipB = 3Çıktı:
8değerinde kesişim bulundu.Açıklama: Kesişen düğümün değeri
8dir (iki liste kesişiyorsa bu değer0olamaz).Alistesinin başından itibaren:[4, 1, 8, 4, 5]Blistesinin başından itibaren:[5, 6, 1, 8, 4, 5]Alistesindeki kesişen düğümden önce 2 düğüm,Blistesindeki kesişen düğümden önce 3 düğüm vardır.
Not:
AveBlistelerindeki1değerine sahip düğümler farklı düğüm referanslarıdır (yani bellekte farklı konumlara işaret ederler). Ancak8değerine sahip düğümler aynı bellek adresine işaret eder, dolayısıyla kesişim bu düğümde gerçekleşir. -
Girdi:
intersectVal = 2listA = [1, 9, 1, 2, 4]listB = [3, 2, 4]skipA = 3skipB = 1Çıktı:
2değerinde kesişim bulundu.Açıklama: Kesişen düğümün değeri
2dir (iki liste kesişiyorsa bu değer0olamaz).Alistesinin başından itibaren:[1, 9, 1, 2, 4]Blistesinin başından itibaren:[3, 2, 4]Alistesindeki kesişen düğümden önce 3 düğüm,Blistesindeki kesişen düğümden önce 1 düğüm vardır.
-
Girdi:
intersectVal = 0listA = [2,6,4]listB = [1,5]skipA = 3skipB = 2Çıktı: Kesişim yok.
Açıklama: A'nın başından itibaren liste
[2,6,4]olarak okunur. B'nin başından itibaren liste[1,5]olarak okunur. İki liste kesişmediği içinintersectVal0 olmalıdır veskipAileskipBrastgele değerler olabilir.- İki liste kesişmediği için sonuç
nulldöndürülür.
- İki liste kesişmediği için sonuç
listA'nın düğüm sayısımiçindedir.listB'nin düğüm sayısıniçindedir.1 <= m, n <= 3 * 10⁴1 <= Node.val <= 10⁵0 <= skipA <= m0 <= skipB <= n- Eğer
listAvelistBkesişmiyorsaintersectVal0'dır. - Eğer
listAvelistBkesişiyorsaintersectVal = listA[skipA] == listB[skipB]
| Dil | Zaman Karmaşıklığı ⏳ | Bellek Karmaşıklığı 🧠 | Çözüm Tarihi 📅 |
|---|---|---|---|
| Kotlin | O(m + n) | O(1) | 1 Aralık 2024 |
Destekleriniz daha fazla problem üzerinde çalışmam için motivasyon sağlar 🚀






